System & DB backup and recovery
Persistence Layer
為了讓HANA 在重新起動服務或因為任何不正常的因素重開機時回復到最後一筆成功的資料交易狀態。我們需要 persistence layer;也就是 storage layer來完成這件事。
通常HANA system的DB會被分為兩部分(Data and log)分別儲存在不會互相影響I/O performance 的storage中以便能達到高效能的要求。
如上圖,其中 Data 區域儲存的大部分是System Data/Application data/Undo log等資訊而且都是在Memory上運作,透過"Async非同步"模式將資料寫入DISK. 而Log 部分則是資料在Memory上有任何異動時該筆交易資料的Log則會"同步"寫入DISK。為了維持這種高效要求,DISK通常都是SSD之類的HD。
而SavePoint則可以視為一段時間的整體完整資料寫入DISK中(預設是每五分鐘寫入一次,這個時間點是可以調整的)
HANA System透過定期的savepoint 資料加上 transaction log回復到最後一筆成功交易資料的方式就跟其他所有的DB是一樣的。
哪為什麼要做備份呢?大概有以下幾點
每一個HANA System的Service 都有自己的 Data and Log需要備份
備份的時間順序可參考下圖
HANA支援下列的備份模式
●Full backup
●Delta backup
●Redo log backups
●Backup and recovery using third party tools
●Integrity checks for backups
●Backup lifecycle management
●Recovery to the most recent state
●Recovery to a specific point in time
●Recovery to a specific data backup
●Database copy using backup and recovery
備份可以用以下工具
-SAP HANA cockpit
-SAP HANA studio
-DBA Cockpit
-SQL commands
這邊要另外提及Log的backup,我們在其他篇提及log的模式有normal and overwrite。在Overwrite模式下是無法做log backup的,另外若你在該DB執行第一次的full backup, HANA會把log 模式自動轉到normal mode.
另外備份時有一些地方需要特別注意
1.備份工作執行時, DB是online的。
2. 確認所有的HANA服務都是啟動中的。
3.備份的過程中對系統的效能影響是很小的
4. 只有正在使用中的資料會有備份,意思是未使用中的資料或是 data block是空值的話是沒有備分的。
5. 若前一個備份工作沒有完成,若再繼續第二個備份工作則第二個工作會被系統終止並繼續執行前一個備份工作。
6. HANA的備份是 full的DB,是無法備份個別的object的。
7. 可以用SQL Command 做 DATA的snapshot(可利用 Cockpit or HANA studio還原)
8. SAP 在備份功能有開放經過SAP驗證的第三方備份軟體(在設定HANA的備份tasks時可以選擇 Backint的介面)。
備份與還原的權限,參考下圖
基本上, 要backup只要有 backup operator的權限即可,但需要還原的話就需要有admin或是 DB admin權限。
另外有幾個SAP Notes可以參考
還原的注意事項
備份的策略
Multitenant DB
System and tenant DB可以獨立各別備份,而tenant DB可透過system DB來備分。備份的資料有這三個部分,如下圖
備份的資料型式有幾種
另外資料還原的狀況可能有
使用cockpit 執行備份作業(示意圖如下)
使用 SQL command 備份
語法: BACKUP DATA USING FILE
範例
Full Backup Tenant DB
BACKUP DATA USING FILE(‘/usr/sap/HD01/HDB01/backup/data/DB_HD1/’,’2020_11_217_14_20_39' ) ASYNCHRONOUS
Differential Backup Tenant DB
BACKUP DATA DIFFERENTIAL USING FILE (‘/usr/sap/HD01/HDB01/backup/data/DB_HD1/’,’2020_11_217_14_20_39')ASYNCHRONOUS
Incremental Backup Tenant DB
BACKUP DATA INCREMENTAL USING FILE (‘/usr/sap/HD01/HDB01/backup/data/DB_HD1/’,’2020_11_217_14_20_39')ASYNCHRONOUS
使用Data Snapshot的注意事項
對storage 的DATAy在特定時間點做snapshot,因為這樣的關係所以對整個系統的影響非常小(因為只有sotrage layer會影響到)所以回復資料也非常快。
Log 的備份
之前提到log的寫入有 normal and overwrite mode, normal mode如下圖的運作方式
我們可以看到這樣的模式是一群log file的循環,哪與overwrite mode的比對是這樣
所以在overwrite的狀況下我們只能使用data做還原而沒有辦法加上log file。也就是還原的時間點只能看這一個data 的savepoint是何時發生的。
假設正常的狀況下我們要怎麼備份呢?通常會是full/Delta/log交互使用以達到資料不遺失發生
哪還原時呢?
還原時的注意重點
備份檔案的檢查
SAP提供了兩個tool(在OS layer)執行備份出來的檔案
提及哪麼多,我們就可以依情況所需來挑選要怎樣的備份,可參考以下比較表